//给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。 
//
// 说明：本题中，我们将空字符串定义为有效的回文串。 
//
// 
//
// 示例 1: 
//
// 
//输入: "A man, a plan, a canal: Panama"
//输出: true
//解释："amanaplanacanalpanama" 是回文串
// 
//
// 示例 2: 
//
// 
//输入: "race a car"
//输出: false
//解释："raceacar" 不是回文串
// 
//
// 
//
// 提示： 
//
// 
// 1 <= s.length <= 2 * 10⁵ 
// 字符串 s 由 ASCII 字符组成 
// 
// Related Topics 双指针 字符串 👍 499 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean isPalindrome(String s) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i<s.length(); i++){
            char c = s.charAt(i);

            if ((c>='A'&&c<='Z') || (c>='a'&&c<='z') || (c>='0'&&c<='9')){
//                String s1 = new String(String.valueOf(c)).toLowerCase(Locale.ROOT);
                sb.append(String.valueOf(c).toLowerCase());
            }
        }

//        System.out.println(sb.toString());
        String s1 = sb.toString();
        String s2 = sb.reverse().toString();
//        StringBuffer reverse = sb.reverse();
//        System.out.println(reverse.toString());
//        System.out.println(sb.toString());

        return s1.equals(s2);
    }
}
//leetcode submit region end(Prohibit modification and deletion)
